package acm;

import org.junit.Test;

import java.util.Arrays;
import java.util.Scanner;

public class DuiShu {
    @Test
    public void test01(String[] args) {
        for (int i = 0; i < 10000; i++) {
            int n = (int) (Math.random() * 10000);
            int[] arr = new int[2 * n];
            for (int j = 0; j < arr.length; j++) {
                arr[j] = (int) (Math.random() * 10000);
            }
            if (fun(arr) != Test1409.fun(arr)) {
                System.out.println(n);
                System.out.println(Arrays.toString(arr));
                System.out.println("预期：" + fun(arr));
                System.out.println("实际：" + Test1409.fun(arr));
            }
        }
    }

    public static int fun(int[] arr) {
        int[] man = new int[arr.length]; // man数组记录男人在所有位置的和
        man[0] = arr[0];
        for (int i = 1; i < man.length; i++) {
            man[i] = man[i - 1] + arr[i];
        }
        int[] woman = new int[arr.length]; // woman数组记录女人在所有位置的和
        woman[arr.length - 1] = arr[arr.length - 1];
        for (int i = arr.length - 2; i >= 0; i--) {
            woman[i] = woman[i + 1] + arr[i];
        }
        int count = 0;
        int i = 0, j = arr.length - 1;
        while (i < arr.length && j >= 0) {
            if (man[i] == woman[j]) { // 如果男在i位置与女在j位置的值相同,男向右一步,女向左一步;
                i++;
                j--;
                count++;
            } else if (man[i] < woman[j]) { // 如果男在i位置的值小于女在j位置的值,男向右一步,女不动;
                i++;
            } else { // 如果男在i位置的值大于女在j位置的值,女向左一步,男不动;
                j--;
            }
        }
        return count;
    }
}
